package aerouacmsla.procedimientos;
/**
 *
 * @author six
 */
public class CreadorDeRfc extends FuncionesValidacionesIdes{
private String nombre;
private String apellidoPaterno;
private String apellidoMaterno;
private String fecha;

    public String getApellidoMaterno() {
        return apellidoMaterno;
    }

    private void setApellidoMaterno(String apellidoMaterno) {
        this.apellidoMaterno = apellidoMaterno;
    this.apellidoMaterno=validar(this.apellidoMaterno);
    }

    public String getApellidoPaterno() {
        return apellidoPaterno;
    }

    private void setApellidoPaterno(String apellidoPaterno) {
        this.apellidoPaterno = apellidoPaterno;
    this.apellidoPaterno=validar(this.apellidoPaterno);
    }

    public String getFecha() {
        return fecha;
    }

    private void setFecha(String fecha) {
        this.fecha = fecha;
    this.fecha=validar(this.fecha);
    }

    public String getNombre() {
        return nombre;
    }

    private void setNombre(String nombre) {
        this.nombre = nombre;
    this.nombre=validar(this.nombre);
    }

    public String medirNombre(String nom, String rfc){
    if(nom.length()>1){
                        rfc=rfc.concat(nom.substring(0, 2));
                    }//if
                    else{
                        rfc=rfc.concat(nom.substring(0, 1));
                    }//else
    return rfc;
}

public String RFC(String apellidoP, String apellidoM, String nombr, String fech){
    setApellidoPaterno(apellidoP);
    setApellidoMaterno(apellidoM);
    setNombre(nombr);
    setFecha(fech);
    String rfc;
    String literal="";
    //String fecharfc="";
    //primera letra del apellido paterno:
    rfc=getApellidoPaterno().substring(0, 1);
    if (getApellidoPaterno().length()>1){
        //apellido paterno tiene mas de dos letras
        if(getApellidoMaterno().length()>0){ //MARCO DICE :Esta linea te va a lanzar una excepcion si apellidoMaterno es nulo
            //apellido materno existe
            for(int i=1; i<getApellidoPaterno().length();i++){
                if(esVocal(getApellidoPaterno().charAt(i))==1 ){
                    //ve si hay una vocal despues de la primera letra del apellido paterno
                    literal=getApellidoPaterno().substring(i,i+1);
                    rfc=rfc.concat(literal);
                    rfc=rfc.concat(getApellidoMaterno().substring(0, 1));
                    rfc=rfc.concat(getNombre().substring(0, 1));
                    break;
                }//crea rfc todo bien
                if(i==getApellidoPaterno().length()-1){
                    rfc=rfc.concat(getApellidoMaterno().substring(0, 1));
                    rfc=medirNombre(getNombre(),rfc);

                }//crea rfc sin vocal en apellido paterno
            }//for
        }//if apellido materno existe
        else{//apellido materno no existe
            for(int i=0;i<getApellidoPaterno().length();i++){
                if(esVocal(getApellidoPaterno().charAt(i))==1){
                    //ve si hay una vocal despues de la primera letra del apellidopaterno
                    literal=getApellidoPaterno().substring(i, i+1);
                    rfc=rfc.concat(literal);
                    rfc=medirNombre(getNombre(),rfc);
                    break;
                }//crearfc sin apellido materno
                if(i==getApellidoPaterno().length()-1){
                    rfc=rfc.concat(getApellidoPaterno().substring(1, 2));
                    rfc=medirNombre(getNombre(),rfc);
                }//crea rfc sin vocal apellido paterno y sin apellido materno
            }//for
        }//else no existe apellido materno
    }//if apellido paterno>1
    else{
        if(getApellidoMaterno().length()>0){ //MARCO DICE :Esta linea te va a lanzar una excepcion si apellidoMaterno es nulo
            rfc=rfc.concat(getApellidoMaterno().substring(0, 1));
            rfc=medirNombre(getNombre(),rfc);
        }//crea rfc de una letra en apellido paterno y con apellido materno
        else{
            if(getNombre().length()>2){
                rfc=rfc.concat(getNombre().substring(0, 3));
            }
            else{
                rfc=rfc.concat(getNombre().substring(0, getNombre().length()));
            }
        }//crea rfc de una letra apellido paterno y sin apellido materno
    }//apellido paterno es de una sola letra

    switch(rfc.length()){
        case 1: rfc=rfc.concat("XXX"); break;
        case 2: rfc=rfc.concat("XX"); break;
        case 3: rfc=rfc.concat("X"); break;
    }//acompleta a cuatro letras pa parte de letras del rfc

    String palabrotas[] =
    {"PUTO", "PUTA", "PEDO", "PEDA", "PITO", "PENE", "PIJA", "CULO", "MOCO"};
    for (int i =0; i<palabrotas.length;i++){
        if (rfc.equalsIgnoreCase(palabrotas[i])){
            rfc=rfc.substring(0, 3);
            rfc=rfc.concat("X");
            break;
        }
    }
    setFecha(fechaFormato(this.fecha,2));
    rfc=rfc.concat(getFecha());//crea el rfc

    return rfc;
}
}
